/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package upeu.cepre.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import upeu.cepre.business.*;
import upeu.cepre.model.*;

/**
 *
 * @author Elvis Zanguetsu
 */
@WebServlet(name = "LoginController", urlPatterns = {"/LoginController"})
public class LoginController extends HttpServlet {

    String usuario;
    String contraseña;
    String url;
    String estado;
    String rol;
    String periodo;
    String trabajador;
    String date1;
    String date2;
    String sede;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        TrabajadorManager trabajadorManajer = new TrabajadorManager();
        DetallePeriodoTrabajadorManager detallePeriodoTrabajador = new DetallePeriodoTrabajadorManager();
        List<Trabajador> listTrabajador = new ArrayList<Trabajador>();
        DetallePeriodoAlumnoManager detallePeriodoAlumnoManager = new DetallePeriodoAlumnoManager();
        Trabajador trabajadorTO = new Trabajador();
        SedeManager sedeMager = new SedeManager();
        DetallePeriodoSedeManager detallePeriodoSedeManager = new DetallePeriodoSedeManager();
        DetalleSedeTrabajadorManager detalleSedeTrabajadorManager = new DetalleSedeTrabajadorManager();
        PeriodoManager periodoManag = new PeriodoManager();
        Periodo periodoTO = new Periodo();
        int sizePeriodo = periodoManag.Report().size();
        periodoTO = periodoManag.finByIdPeriodo(periodoManag.Report().get(sizePeriodo - 1).getIdPeriodo());

        usuario = request.getParameter("txtUsuario");
        contraseña = request.getParameter("txtContrasena");
        url = null;
        periodo = periodoTO.getIdPeriodo();

        listTrabajador = trabajadorManajer.Report();

        for (int h = 0; h < (listTrabajador.size()); h++) {
            if (usuario.equals(listTrabajador.get(h).getUsuario())) {
                h = listTrabajador.size();
                if (contraseña.equals(trabajadorManajer.finByUser(usuario).getContraseña())) {
                    trabajador = trabajadorManajer.finByUser(usuario).getIdTrabajador();
                    rol = detallePeriodoTrabajador.findByIdtrabajadorANDByIdperiodo(trabajador, periodo).getRol();


                    String DPSD = detallePeriodoTrabajador.findByIdtrabajadorANDByIdperiodo(trabajador, periodo).getIdDetallePeriodoTrabajador();
                    sede =  detalleSedeTrabajadorManager.finByIdPerTrabajador(DPSD).getIdDetallePeriodoSede();

                    String admin = "administrador";
                    String trab = "trabajador";
                    if (rol.equals(admin)) {
                        
                        url = "modulos/administrador/administrador_home.jsp";
                        List<DetallePeriodoAlumno> detallealumnos = new ArrayList<DetallePeriodoAlumno>();
                        detallealumnos = detallePeriodoAlumnoManager.findByIdPeriodo(periodo);
 
                        request.getSession().setAttribute("ListDetalleAlumnos", detallealumnos);
                        
                        request.getSession().setAttribute("rol", rol);
                        request.getSession().setAttribute("usuario", usuario);
                        request.getSession().setAttribute("periodo", periodo);
                        request.getSession().setAttribute("sede", sede);

                    }
                    if (rol.equals(trab)) {

                        String PerSede = detallePeriodoSedeManager.finById(detalleSedeTrabajadorManager.finByIdPerTrabajador(DPSD).getIdDetallePeriodoSede()).getIdDetallePeriodoSede();
                        url = "modulos/trabajador/trabajador_home.jsp";
                        List<DetallePeriodoAlumno> detallealumnos = new ArrayList<DetallePeriodoAlumno>();
                        detallealumnos = detallePeriodoAlumnoManager.findByIdPeriodoIdSede(periodo, PerSede);
                        request.getSession().setAttribute("ListDetalleAlumnos", detallealumnos);

                        request.getSession().setAttribute("rol", rol);
                        request.getSession().setAttribute("usuario", usuario);
                        request.getSession().setAttribute("periodo", periodo);
                        request.getSession().setAttribute("sede", sede);
                       


                    }
                } else {
                    url = "error.jsp";
                }
            } else {
                url = "error.jsp";
            }
        }
        response.sendRedirect(url);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
